// Ver.0
    publicvoid PipeCalcMain( System::Drawing::Printing::PrintPageEventArgs^ e )
            {
                Int32 i;    Int32 j;    Int32 n;    Int32 m;
                Int32 N1;
                float D1;    float D2;    float Dmax;    float Dref;
                float X;    float Y;    float R;    float R1;
                float X0;    float Y0;    float X1;    float Y1;
                float Th;    float Th1;    float Th2;    float Th3;    float Th4;    float Th5;
                float Pai;    float Pai2;
                Pai = 4.0F * atan(1.0F);
                Pai2 = Pai + Pai;
                Th = 0.0;    Th1 = 0.0;    Th2 = 0.0;    Th3 = 0.0;    Th4 = 0.0;    Th5 = 0.0;
                D1 = 0.0;    D2 = 0.0;    Dmax = 0.0;    Dref = 0.0;
                X0 = 150.0;    Y0 = 100.0;    X1 = X0;    Y1 = Y0;    R1 = 0.0;
                m = 0;        n = 1;
                for ( i = 0; i < DataMax; i++ )
                {
                    D2 = D1;
                    Th2 = Th1;
                    D1 = InData[i].D;
                    N1 = InData[i].N;
                    R = D1 * 0.5F;
                    if ( n == 1 ) { R1 = R; D2 = D1; n = 2; }
                    Th4 = asin( 0.5F * R / ( R1 + R ) );
                    if ( Th1 > 0 ) Th1 = Th3 + 2 * Th4;
                    if ( ( ( Th3 + 4 * Th4 ) <= ( Pai2 - 2 * Th5 ) )  && ( ( R1 + D1 ) < Dmax ) ) Th1 = Th2 - 2 * Th + 2 * Th4;
                    for ( j = 1; j <= N1; j++ )
                    {
                        if ( i == 0 && j == 1 )
                        {
                            X = X0;
                            Y = Y0;
                            R1 = R;
                            Dmax = D1;
                            if ( DspPrtFlg ) CircleDraw( X, Y , R ); else CirclePrint( X, Y, R, e );
                        }
                        else
                        {
                            X1 = ( R1 + R ) * cos( Th1 );
                            Y1 = ( R1 + R ) * sin( Th1 );
                            X = X1 + X0;
                            Y = Y1 + Y0;
                            if ( DspPrtFlg ) CircleDraw( X, Y , R ); else CirclePrint( X, Y, R, e );
                            Th = asin( 0.5F * R / ( R1 + R ) );
                            Th3 = Th1 + 2 * Th;
                            Th1 += 4 * Th;
                            if ( i == 0 && j == 2 ) Dmax = R1 + D1;
                            if ( InData[0].N == 1 && i == 1 ) Dmax = R1 + D1;
                            if ( ( Th1 + 4 * Th ) > Pai2 )
                            {
                                if ( i == m ) Dref = Dmax - 0.5F * D1; else Dref = Dmax - 0.5F * D2;
                                if ( ( R1 + D1 + R ) < Dref )
                                {
                                    R1 += D1; Th1 = Th2;
                                }
                                else
                                {
                                    Th1 = 0.0; Th2 = Th1; Th3 = Th2; Th5 = Th;
                                    R1 = Dmax; Dmax += D1;
                                }
                            }
                        }
                        m = i;
                    }
                }
            }